package tuanda.soict.firstsun.EffectPackage;

import tuanda.soict.firstsun.LogicPackage.Army;
import tuanda.soict.firstsun.LogicPackage.Controllable;
import tuanda.soict.firstsun.LogicPackage.Scenario;

/**
 * @author tuanda_soict_hut
 * @version 0.0.2
 * @since 17-10-2012
 */
public abstract class Effect implements Controllable {

	protected int ID;
	protected String effectName;
	protected int effectDuration;
	protected int effectPoint;
	protected Scenario scenario;

	public Effect(int id, String name, int dur, int point, Scenario scena) {
		setID(id);
		setName(name);
		setEffectDuration(dur);
		setEffectPoint(point);
		setScenario(scena);
	}

	@Override
	public final String getName() {
		return this.effectName;
	}

	@Override
	public final void setName(String name) {
		this.effectName = name;
	}

	@Override
	public final int getID() {
		return this.ID;
	}

	@Override
	public final void setID(int id) {
		this.ID = id;
	}

	public final int getEffectDuration() {
		return this.effectDuration;
	}

	public final void setEffectDuration(int dur) {
		this.effectDuration = dur;
	}

	public final int getEffectPoint() {
		return this.effectPoint;
	}

	public final void setEffectPoint(int point) {
		this.effectPoint = point;
	}

	public Scenario getScenario() {
		return scenario;
	}

	public void setScenario(Scenario scena) {
		this.scenario = scena;
	}

	public abstract void beforeAct(Army army);

	public abstract void mainAct(Army army);

	public abstract void afterAct(Army army);
}
